#ifndef CONNECTION_HANDLER_H
#define CONNECTION_HANDLER_H

#include <memory>
#include "command.h"
// 前向声明
class CommandHandler;

void handle_connection(int client_fd);
void send_response(int client_fd, const std::string& response);

// 文件传输辅助函数
struct FileMetadata;
bool get_file_metadata(const std::string& path, FileMetadata& metadata);
void receive_file_data(int client_fd, const std::string& file_path);
void send_file_data(int client_fd, const std::string& file_path);

// 每个连接的上下文
struct ConnectionContext {
    int client_fd;
    std::unique_ptr<CommandHandler> cmd_handler;
    
    ConnectionContext(int fd) : client_fd(fd) {
        cmd_handler = std::make_unique<CommandHandler>();
    }
};

#endif // CONNECTION_HANDLER_H